package com.xadrez.view;

import com.xadrez.ia.IA;
import com.xadrez.modelo.Posicao;
import com.xadrez.modelo.Peca;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.MouseEvent;

public class MovimentoView {

    private static PecaView pecaAMover = null;

    //Move a peça para alguma posição.
    public static void desenhaAcaoDoMouse(MouseEvent e) {

        TabuleiroView tabuleiroView = TabuleiroView.getInstance();
        PecaView pecaClicada = null;

        Component c = TabuleiroView.getInstance().findComponentAt(e.getX(), e.getY());
        pecaClicada = tabuleiroView.buscaPeca(e.getX(), e.getY());
        // Se entrar no IF - Quer dizer que clicou numa peça: 
        //                              - Pode ser que ele clicou na dele(vai mover);
        //                              - Pode ser que ele clicou na do inimigo(vai comer);
        // Se entrar no ELSE - Quer dizer que ele clicou num campo vazio: 
        //                              - Pode ser que ele clicou num campo para mover uma peca previamente clicada;
        //                              - Pode ser que ele clicou num vazio por nada;
        if (pecaClicada != null) {
            if (!(pecaClicada.getPeca().getJogador() instanceof IA)) {
                Pintor.pintaQuadrados(e, pecaClicada);
                pecaAMover = pecaClicada;
            } else {
                Container parent = c.getParent();
                if (parent.getBackground().equals(Cor.getInstance().getCorPecaInimigo())) {
                    come(pecaClicada, pecaAMover);
                    pecaAMover = null;
                }
            }
        } else {
            if (pecaAMover != null && c.getBackground().equals(Cor.getInstance().getCorCampoLivre())) {
                move(pecaAMover, c);
                pecaAMover = null;
            }
        }
    }
    
    public static void desenhaIAComendo(Peca pecaComedora, Peca pecaASerComida) {
        
    }
    
    public static void desenhaIAMovendo(Peca peca, Posicao jogada) {
        
    }

    private static void move(PecaView pecaView, Component c) {
        Container parent = (Container) c;
        parent.add(pecaView.getImagem());

        Pintor.limpaTabuleiro();
    }

    private static void come(PecaView pecaClicada, PecaView pecaAMover) {
        Posicao posicaoView = TabuleiroView.getInstance().recuperaMapaDePosicao(pecaClicada).getPosicaoView();

        Component c = TabuleiroView.getInstance().findComponentAt(posicaoView.getX(), posicaoView.getY());
        Container parent = c.getParent();
        parent.remove(0);
        TabuleiroView.getInstance().getPecas().remove(pecaClicada);
        parent.add(pecaAMover.getImagem());

        Pintor.limpaTabuleiro();
    }
}
